package com.hu.common.enums;


import com.hu.common.domain.IDict;
import com.hu.common.exception.IResultCode;

/**
 * @Author: zyz
 * @Date: 2023/7/17
 * @Version 1.0
 */
public enum BaseResultCodeEnum implements IResultCode, IDict<Integer> {

    /**
     * 参数为空
     */
    NULL_ARGUMENT(1001, "参数为空"),

    /**
     * 非法参数
     */
    ILLEGAL_ARGUMENT(1002, "参数不合法"),

    /**
     * 非法配置
     */
    ILLEGAL_CONFIGURATION(1003, "配置不合法"),

    /**
     * 非法状态
     */
    ILLEGAL_STATE(1004, "状态不合法"),

    /**
     * 错误的枚举编码
     */
    ENUM_CODE_ERROR(1005, "错误的枚举编码"),

    /**
     * 逻辑错误
     */
    LOGIC_ERROR(1006, "逻辑错误"),

    /**
     * 并发异常
     */
    CONCURRENT_ERROR(1007, "并发异常"),

    /**
     * 非法操作
     */
    ILLEGAL_OPERATION(1008, "非法操作"),

    /**
     * 重复操作
     */
    REPETITIVE_OPERATION(1009, "重复操作,请稍后再试"),

    /**
     * 资源不存在
     */
    RESOURCE_NOT_FOUND(1010, "资源不存在"),

    /**
     * 资源已存在
     */
    RESOURCE_ALREADY_EXIST(1011, "资源已存在"),

    /**
     * 类型不匹配
     */
    TYPE_UN_MATCH(1012, "类型不匹配"),

    /**
     * FILE_NOT_EXIST
     */
    FILE_NOT_EXIST(1013, "文件不存在"),


    /**
     * 业务处理异常
     */
    BIZ_ERROR(400, "业务处理异常"),

    /**
     * 外部接口调用异常
     */
    INTERFACE_SYSTEM_ERROR(4001, "外部接口调用异常"),
    ;

    /**
     * 枚举编号
     */
    private final Integer code;

    /**
     * 枚举详情
     */
    private final String message;


    /**
     * 构造方法
     *
     * @param code    枚举编号
     * @param message 枚举详情
     */
    BaseResultCodeEnum(Integer code, String message) {
        init(code, message);
        this.code = code;
        this.message = message;
    }

    @Override
    public Integer getCode() {
        return code;
    }

    @Override
    public String getMessage() {
        return message;
    }
}
